package park;

import java.util.Scanner;

public class J16Ch05Calcurator {

	public static void main(String[] args) {

		String msg = "두 정수와 연산자를 입력하세요";
		Scanner sc = new Scanner(System.in);

		// 업캐스팅을 이용해서 참조변수 cal 선언
		J16Cal cal = null;
		J16CalService cs = new J16CalService();

		System.out.println(msg);
		int a = sc.nextInt();
		String c = sc.next();
		int b = sc.nextInt();

		switch (c) {

		case "+":
			cal = new J16Add();
			cal.setValue(a, b);
			cs.calculate(cal, "+");
			break;

		case "-":
			cal = new J16Sub();
			cal.setValue(a, b);
			cs.calculate(cal, "-");
			break;

		case "*":
			cal = new J16Mul();
			cal.setValue(a, b);
			cs.calculate(cal, "*");
			break;

		case "/":
			cal = new J16Div();
			cal.setValue(a, b);
			cs.calculate(cal, "/");

		}

		sc.close();  

	}// main

}// class

class J16Cal {

	private int x;
	private int y;

	// 생성자는 생략 - set value()로 대신

	public void setValue(int x, int y) {
		this.x = x;
		this.y = y;
	}

	@Override
	public String toString() {
		String result = "";
		result += x + "/" + y;
		return result;
	}

	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}

}

class J16Add extends J16Cal {
}

class J16Sub extends J16Cal {
}

class J16Mul extends J16Cal {

}

class J16Div extends J16Cal {

}

interface J16CalIService {

	void calculate(J16Cal c, String type);

}

class J16CalService implements J16CalIService {

	@Override
	public void calculate(J16Cal c, String type) {
		int result = 0;
		switch (type) {
		case "+":
			result = c.getX() + c.getY();
			break;
		case "-":
			result = c.getX() + c.getY();
			break;
		case "*":
			result = c.getX() + c.getY();
			break;
		case "/":
			result = c.getX() + c.getY();

		}
		System.out.println(result);
	}

}
